<?php
namespace App\Exceptions\Response\Service;

use App\Exceptions\Response\CodeInterface;

/**
 * 业务逻辑异常 Code
 */
class ServiceCode implements CodeInterface
{

    /**
     * （业务逻辑错误）默认错误
     */
    const SERVICE_CODE = 43000;

    /* 其他错误 */
    /**
     * （参数错误）其他错误
     */
    const SERVICE_PARAM_INVALID = 43001;

    /**
     * （密码错误）其他错误
     */
    const SERVICE_PARAM_INVALID_PASSWORD = 43002;

    /* 不存在错误 */
    /**
     * （数据不存在）不存在错误
     */
    const SERVICE_DATA_NOT_EXIST = 43010;

    /**
     * （用户不存在）不存在错误
     */
    const SERVICE_NOT_EXIST_USER = 43101;

    /* 存在错误 */
    /**
     * （数据已存在）存在错误
     */
    const SERVICE_DATA_EXISTED = 43020;

    /* 操作错误 */
    /**
     * （保存失败）操作错误
     */
    const SERVICE_ACTION_SAVE_ERROR = 43030;

    /* 禁用错误 */
    /**
     * （数据被禁用）禁用错误
     */
    const SERVICE_DISABLE_DATA = 43400;

    /**
     * （用户被禁用）禁用错误
     */
    const SERVICE_DISABLE_USER = 43401;

    /* 权限错误 */
    /**
     * （数据未授权）权限错误
     */
    const SERVICE_NOT_AUTH_DATA = 43500;

    /**
     * （用户未授权）权限错误
     */
    const SERVICE_NOT_AUTH_USER = 43501;

    /* 超级管理员 */
    /**
     * （超级管理员）超级管理员
     */
    const SERVICE_SUPER_ADMIN = 43700;

    /**
     * （没有权限管理该账号）超级管理员
     */
    const SERVICE_SUPER_ADMIN_AUTH = 43701;

    /* Api服务错误 */
    /**
     * Api服务错误
     */
    const SERVICE_API_SERVICE = 43920;

    /**
     * Api服务请求超时
     */
    const SERVICE_API_SERVICE_REQUEST_TIMEOUT = 43921;

    private static $MESSAGE_TEXT = [
        /* 默认错误 */
        self::SERVICE_CODE => '业务逻辑错误',

        /* 其他错误 */
        self::SERVICE_PARAM_INVALID => '参数错误',
        self::SERVICE_PARAM_INVALID_PASSWORD => '密码错误',

        /* 不存在错误 */
        self::SERVICE_DATA_NOT_EXIST => '数据不存在',
        self::SERVICE_NOT_EXIST_USER => '用户不存在',

        /* 存在错误 */
        self::SERVICE_DATA_EXISTED => '数据已存在',

        /* 操作错误 */
        self::SERVICE_ACTION_SAVE_ERROR => '保存失败',
        
        /* 禁用错误 */
        self::SERVICE_DISABLE_DATA => '数据被禁用',
        self::SERVICE_DISABLE_USER => '用户被禁用',
        
        /* 权限错误 */
        self::SERVICE_NOT_AUTH_DATA => '数据未授权',
        self::SERVICE_NOT_AUTH_USER => '用户未授权',
        
        /* 超级管理员 */
        self::SERVICE_SUPER_ADMIN => '超级管理员',
        self::SERVICE_SUPER_ADMIN_AUTH => '没有权限管理该账号',
        
        /* Api服务错误 */
        self::SERVICE_API_SERVICE => 'Api服务错误',
        self::SERVICE_API_SERVICE_REQUEST_TIMEOUT => 'Api服务请求超时'
    ];

    public static function getMessage($code)
    {
        return isset(self::$MESSAGE_TEXT[$code]) ? self::$MESSAGE_TEXT[$code] : self::$MESSAGE_TEXT[self::SERVICE_CODE];
    }

    public static function has($code)
    {
        return isset(self::$MESSAGE_TEXT[$code]) ? true : false;
    }
}